#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define rep(i, a, b) for (int i = (a); i <= (b); i++)
#define per(i, a, b) for (int i = (a); i >= (b); i--)
#define endl '\n'
const int N = 2e5 + 5;

int n, m;
struct Node {
  double x, y, z;
} a[N], b;
int vp, vs;
double t1[N], t2[N];
double calc(Node s, Node t, int v) {
  double dx = s.x - t.x, dy = s.y - t.y, dz = s.z - t.z;
  double d = sqrt(dx * dx + dy * dy + dz * dz);
  return d / v;
}
bool check(int i, double r) {
  double dx = a[i].x - a[i - 1].x, dy = a[i].y - a[i - 1].y,
         dz = a[i].z - a[i - 1].z;
  double x = a[i - 1].x + r * dx, y = a[i - 1].y + r * dy,
         z = a[i - 1].z + r * dz;
  double dt = r * sqrt(dx * dx + dy * dy + dz * dz) / vs;
  double u = calc(b, Node{x, y, z}, vp);
  double v = t1[i - 1] + dt;
  return u <= v;
}
void solve() {
  cin >> n;
  rep(i, 0, n) cin >> a[i].x >> a[i].y >> a[i].z;
  cin >> vp >> vs;
  cin >> b.x >> b.y >> b.z;
  rep(i, 1, n) t1[i] = t1[i - 1] + calc(a[i - 1], a[i], vs);
  rep(i, 1, n) t2[i] = calc(b, a[i], vp);
  // rep(i, 1, n) cout << i << ' ' << t1[i] << ' ' << t2[i] << endl;
  rep(i, 1, n) {
    if (t2[i] <= t1[i]) {
      cout << "YES" << endl;
      double l = 0.0, r = 1.0;
      rep(j, 1, 400) {
        double mid = (l + r) / 2.0;
        if (check(i, mid))
          r = mid;
        else
          l = mid;
      }
      double dx = a[i].x - a[i - 1].x, dy = a[i].y - a[i - 1].y,
             dz = a[i].z - a[i - 1].z;
      double x = a[i - 1].x + r * dx, y = a[i - 1].y + r * dy,
             z = a[i - 1].z + r * dz;
      double dt = r * sqrt(dx * dx + dy * dy + dz * dz) / vs;
      double t = t1[i - 1] + dt;
      cout << fixed << setprecision(10) << t << endl;
      cout << fixed << setprecision(10) << x << ' ' << y << ' ' << z << endl;
      return;
    }
  }
  cout << "NO" << endl;
  return;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int t = 1;
  while (t--) solve();
  return 0;
}